package com.capgemini.cn.authority.rest.service;

import com.capgemini.cn.authority.rest.exception.AuthRestBusinessException;
import com.capgemini.cn.authority.rest.valueobject.DataResponse;
import com.capgemini.cn.authority.rest.valueobject.data.PermissionVO;

import java.util.List;

/**
 * Created at 2017/11/1
 *
 * @author Andriy
 */
public interface PermissionService extends CommonService<PermissionVO> {

    /**
     * 根据角色查询其所拥有的权限信息
     *
     * @param roleId 角色主键ID值
     * @return 包装成{@link DataResponse}对象返回对应的实体对象数据
     */
    DataResponse<List<PermissionVO>> findPermissionByRole(long roleId);

    /**
     * 为指定角色分配权限
     *
     * @param roleId        角色主键ID值
     * @param permissionIds 需要分配的权限
     * @return 包装成{@link DataResponse}对象返回对应的实体对象数据
     */
    DataResponse<List<PermissionVO>> assignPermission(Long roleId, Long... permissionIds) throws AuthRestBusinessException;

    /**
     * 为指定角色解绑权限
     *
     * @param roleId        角色主键ID值
     * @param permissionIds 需要解绑的权限
     * @return 包装成{@link DataResponse}对象返回对应的实体对象数据
     */
    DataResponse<List<PermissionVO>> releasePermission(Long roleId, Long... permissionIds) throws AuthRestBusinessException;
}
